EC2のボリュームを別のEC2にアタッチ/デタッチする手順
テクニカルサポート部の 丸屋 正志(まるちゃん)です。
1. はじめに
例えば・・・ /etc/hosts.allow(deny) の設定を誤って sshd : 192.168.0.5 などにした後に GlobalIP で SSH しようとしても出来なかったことは有りませんか?僕は物凄くあります。
SSH 接続をしようとした時に【kex_exchange_identification: read: Connection reset by peer】などが出てログイン出来なくってしまった時などにも、使用することが出来る対処方法になります。
2. 環境構築
EC2 インスタンスを 2台構築して、SSH接続が出来るようにしておいてください。
- 【ログイン不可用】 : 現在接続が出来ないインスタンスを指しています。
- 【調査用】 : 別途、調査用に立てたインスタンスを指しています。
2.1.【ログイン不可用】にて事前準備
ブラックリストの設定で全てがアクセス出来ないようにする。
sudo vim /etc/hosts.deny ================= #↓を追加 ALL: ALL ================= sudo systemctl relooad sshd exit
再度 SSH 接続をすると・・・
ssh -i ~/.ssh/鍵.pem ec2-user@GlobalIP kex_exchange_identification: read: Connection reset by peer
これで、【ログイン不可用】にログインすることが出来なくなりました。
それでは、今から再度SSH接続が出来るように対応していきます・・・の前にまずはバックアップを取得しましょう。
下記サイトを参考にバックアップをしてください。
- 【EC2】AMI イメージ作成手順
本番環境で実施している場合は、必ずバックアップを取得しましょう。(大事なことなので2回!)
2.2.【ログイン不可用】にてボリュームのデタッチ
- 【ログイン不可用インスタンス】のバックアップが完了したら、インスタンスの停止(Stop)
- [Elastic Block Store] -> [ボリューム]に移動
- 【ログイン不可用】を選択
- [アクション]を選択
- [ボリュームのデタッチ]を選択
- [デタッチする]を選択
- 状態が [in-use] から [available] に切り替わったことを確認
2.3. 【調査用】に【ログイン不可用】のボリュームをアタッチ
- [Elastic Block Store] -> [ボリューム]に移動
- 【ログイン不可用】を選択
- [アクション]を選択
- [ボリュームのアタッチ]を選択
- インスタンス : 【調査用】を選択
- デバイス : 任意(基本的には操作不要)
- [アタッチ]を選択
2.4. 【調査用】に【ログイン不可用】のボリュームをマウント
先ほど設定したデバイスへのリンクを確認します。
ll /dev/ | grep sdf lrwxrwxrwx 1 root root 4 2月 22 13:12 sdf -> xvdf lrwxrwxrwx 1 root root 5 2月 22 13:12 sdf1 -> xvdf1
ディスクのパーティションを確認します。
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part
[xvdf1] が ディスク[xvdf] のパーティションであることがわかりましたので、マウントポイントを作成し、ボリュームをマウントします。
sudo mkdir /mnt/ebs sudo mount -t xfs -o nouuid /dev/xvdf1 /mnt/ebs
マウントされていることを確認します。
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part /mnt/ebs
2.5. 【ログイン不可用】のhosts.deny を編集
ブラックリストの設定で削除もしくは、コメントアウトしていきます。
sudo vim /mnt/ebs/etc/hosts.deny ================= #↓を削除/コメントアウト #ALL: ALL =================
2.6. 【ログイン不可用】のボリュームをアンマウント
ボリュームをアンマウントしていきます。
sudo umount -d /mnt/ebs/
マウントが解除されていることを確認します。
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdf 202:80 0 8G 0 disk └─xvdf1 202:81 0 8G 0 part
2.7.【ログイン不可用】にてボリュームのデタッチ
- [Elastic Block Store] -> [ボリューム]に移動
- 【ログイン不可用】を選択
- [アクション]を選択
- [ボリュームのデタッチ]を選択
- [デタッチする]を選択
2.8.【ログイン不可用】にてボリュームの再度アタッチ
- [Elastic Block Store] -> [ボリューム]に移動
- 【ログイン不可用】を選択
- [アクション]を選択
- [ボリュームのアタッチ]を選択
- インスタンス : 【調査用】を選択
- デバイス : 【/dev/xvda】を指定
- [アタッチ]を選択
- 【ログイン不可用インスタンス】のアタッチが完了しましたら、インスタンスの開始(Start)
- 再度 SSH 接続をしてみると接続することが出来ました。
参照サイト一覧
- インスタンスへの Amazon EBS ボリュームのアタッチ
- Linux インスタンスからの Amazon EBS ボリュームのデタッチ
最後に
やはりトラブルシュートをしている時が一番楽しいですね。